Knowledge is often captured and fragmented across a set of digital artifacts or files such as text files, images, binaries, source code, proprietary application files, and others. Over the course of capturing or creating such knowledge, implicit relationships between the artifacts in the set are created and/or assumed. To understand or view the state of the knowledge at a given time, one must often examine all or many of the capturing artifacts as they existed at that time.
The types of knowledge and their capturing artifacts may vary widely. Examples include: human understandable knowledge, captured in word processing documents, spread sheets, images, diagrams, and others; executable “knowledge”, captured in source code, binaries, configuration files, etc.; distributed transactional knowledge, captured in distributed transaction systems; business process knowledge, captured in the various systems and services composed into the process; process/thread knowledge, captured in the runtimes of a parallel/multi-threaded program.
Systems exist that capture and relate various types of knowledge. Examples of such systems include dependency management systems, version control systems, content management systems. These systems capture artifact state at designated points only, for example, via versions, milestones, commit points; but not the set of actions/changes that transformed an artifact from state N to state N+1. Navigation and relationships between artifacts are organized around and limited to their state at the designated points.
Viewing the state of a set of related artifacts at a given point in time is not possible if a designated point—e.g., versions, milestones, commit points—does not exist for that point in time. In the current state of the art, users are not able to access the state of a set of artifacts as they existed at time Y, and/or create a new state of the artifacts starting from their state at time Y, where Y is not the present and the state at time Y is not captured explicitly by a version, milestone, commit point or another such designated point captured by known methodologies. Such inability presents a limiting factor in collaborative knowledge creation and discovery, debugging of distributed and/or parallel systems, forensic knowledge discovery, and others.
In addition, in the current state of the art, artifacts must be under the control of a single instance/installation of these systems in order to relate them to each other and thus recreate the captured/fragmented knowledge. Relationships between artifacts where one or more exists completely outside the systems' hierarchies can not be captured or navigated.